/**
 * Description:
 * Class Name:ReferenceTest
 * Date:2022/2/13 13:32
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第6章_面向对象_下._6_10_对象与垃圾回收._6_10_4_对象的软_弱_虚引用;

import java.lang.ref.WeakReference;

public class ReferenceTest {
    public static void main(String[] args) throws Exception{
        // 创建一个字符串对象
        var str = new String("字符串1");
        // 创建一个弱引用，让此弱引用引用到"字符串1"字符串
        var wr = new WeakReference(str);            // ①
        // 切断str引用和"字符串1"之间的强引用
        str = null;                                 // ②
        // 取出弱引用所引用的对象
        System.out.println(wr.get());               // ③
        // 强制垃圾回收
        System.gc();
        System.runFinalization();
        // 再次取出弱引用所引用的对象，发现已经被回收，只能显示null了
        System.out.println(wr.get());               // ④
    }
}
